package com.hui.config;

import lombok.extern.slf4j.Slf4j;

import java.io.File;


/**
 * @BelongsProject: demo
 * @BelongsPackage: com.hui.config
 * @Author: HUI
 * @CreateTime: 2021-12-07 11:24
 * @Description: 文件下载，按照文件名进行查找，根据上传文件时，文件名以 "-"分割来查找
 */

@Slf4j
public class FindFile {


    public static String findFile(String fileName) {
        File[] files = new File("src\\main\\resources\\files").listFiles();//获得该目录下的所有文件，会自动获取到该项目下的目录
        String[] arr;//保存每个文件以"-"分割后的文件名
        StringBuilder name = new StringBuilder();//保存找到的文件名
        boolean found;//判断是否找到
        assert files != null : "The filepath is empty";//如果项目 目录不存在抛出异常
        for (File file : files) {
            name.delete(0, name.length());//清空未匹配成功的文件名
            arr = file.toString().split("-");
            name.append(arr[1]);
            if (arr.length > 2) {//当文件名中包含多个 "-" 时，将后面的文件名逐一追加
                for (int i = 2; i < arr.length; i++) {
                    name.append(arr[i]);
                }
            }
            found = name.toString().equals(fileName.replaceAll("-", ""));
            if (found) {
                String userDir = System.getProperty("user.dir");
                return userDir+"\\"+file.toString();
            }
        }

        return "";
    }


    /**
     * 检索是否包含文件，返回完整路径名-->没有在找到文件名后加判断文件名是否包含多个 "-"
     *
     * @param fileName:需要搜索的文件名
     * @return: 返回完整的路径名
     */
    @Deprecated
    public static String findFile2(String fileName) {
        String rootPathName = System.getProperty("user.dir") + "\\src\\main\\resources\\files";//获得文件保存的路径
        String[] name = null;//要下载文件的名字
        String replace = "";
        File[] files = new File(rootPathName).listFiles();
        for (File file : files) {
            replace = file.toString().replace(rootPathName, "");
            name = replace.split("-");
            boolean equals = name[1].equals(fileName);
            if (equals) {
                return file.toString();
            }
        }
        //返回 null表示没找到
        return "";
    }
}
